Micron Document
🎖️GitЯра🎖️

Node / meshtastic / Meshtastic-Android / files / feature / connections / src / commonMain / kotlin / org / meshtastic / feature / connections / domain / usecase / CommonGetDiscoveredDevicesUseCase.kt

Displaying Raw • Download

feature/connections/src/commonMain/kotlin/org/meshtastic/feature/connections/domain/usecase/CommonGetDiscoveredDevicesUseCase.kt bd2863243bab6eb213401d949839a2bc74dde7e2 (bd286324) Text, 3.55 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.connections.domain.usecase

Tff7b72import T7ee787kotlinx.coroutines.flow.Flow
Tff7b72import T7ee787kotlinx.coroutines.flow.combine
Tff7b72import T7ee787kotlinx.coroutines.flow.flowOf
Tff7b72import T7ee787org.meshtastic.core.common.database.DatabaseManager
Tff7b72import T7ee787org.meshtastic.core.common.util.safeCatchingAll
Tff7b72import T7ee787org.meshtastic.core.datastore.RecentAddressesDataSource
Tff7b72import T7ee787org.meshtastic.core.network.repository.DiscoveredService
Tff7b72import T7ee787org.meshtastic.core.repository.NodeRepository
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.getStringSuspend
Tff7b72import T7ee787org.meshtastic.core.resources.meshtastic
Tff7b72import T7ee787org.meshtastic.feature.connections.model.DiscoveredDevices
Tff7b72import T7ee787org.meshtastic.feature.connections.model.GetDiscoveredDevicesUseCase

T8b949e/**
* Platform-agnostic implementation of [GetDiscoveredDevicesUseCase].
*
* Intentionally NOT annotated `@Single` in common source: on Android, the richer
* [org.meshtastic.feature.connections.domain.usecase.AndroidGetDiscoveredDevicesUseCase] is the canonical binding, and
* a common `@Single` here would silently override it (last-write-wins), producing an empty USB list. Each non-Android
* target registers its own `@Single` wrapper (see `JvmGetDiscoveredDevicesUseCase`).
*/
Tff7b72open Tff7b72class T56d364CommonGetDiscoveredDevicesUseCaseTb4b4b4(
Tff7b72private Tff7b72val Te6edf3recentAddressesDataSourceTb4b4b4: Te6edf3RecentAddressesDataSourceTb4b4b4,
Tff7b72private Tff7b72val Te6edf3nodeRepositoryTb4b4b4: Te6edf3NodeRepositoryTb4b4b4,
Tff7b72private Tff7b72val Te6edf3databaseManagerTb4b4b4: Te6edf3DatabaseManagerTb4b4b4,
Tff7b72private Tff7b72val Te6edf3usbScannerTb4b4b4: Te6edf3UsbScanner? Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4) Tb4b4b4: Te6edf3GetDiscoveredDevicesUseCase Tb4b4b4{

Tff7b72override Tff7b72fun Td2a8ffinvokeTb4b4b4(
Te6edf3showMockTb4b4b4: Tffa657BooleanTb4b4b4,
Te6edf3showReplayTb4b4b4: Tffa657BooleanTb4b4b4,
Te6edf3resolvedListTb4b4b4: Te6edf3FlowTff7b72<Te6edf3ListTff7b72<Te6edf3DiscoveredServiceTff7b72>Tff7b72>Tb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3FlowTff7b72<Te6edf3DiscoveredDevicesTff7b72> Tb4b4b4{
Tff7b72val Te6edf3nodeDb Tff7b72= Te6edf3nodeRepositoryTb4b4b4.Te6edf3nodeDBbyNum
Tff7b72val Te6edf3usbFlow Tff7b72= Te6edf3usbScannerTff7b72?.Te6edf3scanUsbDevicesTb4b4b4(Tb4b4b4) Tff7b72?: Te6edf3flowOfTb4b4b4(Te6edf3emptyListTb4b4b4(Tb4b4b4)Tb4b4b4)

Tff7b72return Te6edf3combineTb4b4b4(Te6edf3nodeDbTb4b4b4, Te6edf3resolvedListTb4b4b4, Te6edf3recentAddressesDataSourceTb4b4b4.Te6edf3recentAddressesTb4b4b4, Te6edf3usbFlowTb4b4b4) Tb4b4b4{
Te6edf3dbTb4b4b4,
Te6edf3resolvedTb4b4b4,
Te6edf3recentListTb4b4b4,
Te6edf3usbListTb4b4b4,
Tff7b72-Tff7b72>
Tff7b72val Te6edf3defaultName Tff7b72= Te6edf3safeCatchingAll Tb4b4b4{ Te6edf3getStringSuspendTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3meshtasticTb4b4b4) Tb4b4b4}Tb4b4b4.Te6edf3getOrDefaultTb4b4b4(Ta5d6ff"Ta5d6ffMeshtasticTa5d6ff"Tb4b4b4)
Tff7b72val Te6edf3processedTcp Tff7b72= Te6edf3processTcpServicesTb4b4b4(Te6edf3resolvedTb4b4b4, Te6edf3recentListTb4b4b4, Te6edf3defaultNameTb4b4b4)
Tff7b72val Te6edf3discoveredTcpAddresses Tff7b72= Te6edf3processedTcpTb4b4b4.Te6edf3mapToTb4b4b4(Te6edf3mutableSetOfTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3fullAddress Tb4b4b4}

Tff7b72val Te6edf3discoveredTcpForUi Tff7b72= Te6edf3matchDiscoveredTcpNodesTb4b4b4(Te6edf3processedTcpTb4b4b4, Te6edf3dbTb4b4b4, Te6edf3resolvedTb4b4b4, Te6edf3databaseManagerTb4b4b4)
Tff7b72val Te6edf3recentTcpForUi Tff7b72= Te6edf3buildRecentTcpEntriesTb4b4b4(Te6edf3recentListTb4b4b4, Te6edf3discoveredTcpAddressesTb4b4b4, Te6edf3dbTb4b4b4, Te6edf3databaseManagerTb4b4b4)

Tff7b72val Te6edf3mockEntries Tff7b72= Te6edf3virtualDeviceEntriesTb4b4b4(Te6edf3showMockTb4b4b4, Te6edf3showReplayTb4b4b4)

Te6edf3DiscoveredDevicesTb4b4b4(
Te6edf3discoveredTcpDevices Tff7b72= Te6edf3discoveredTcpForUiTb4b4b4,
Te6edf3recentTcpDevices Tff7b72= Te6edf3recentTcpForUiTb4b4b4,
Te6edf3usbDevices Tff7b72= Te6edf3usbList Tff7b72+ Te6edf3mockEntriesTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.1s